Data storage apparatus with a hdd and a removable solid state device

ABSTRACT

A data storage apparatus includes a non-volatile hard disk drive platter, a coupling interface for removably receiving a non-volatile solid state device operable as a cache. The data storage apparatus also includes a communication line functionally connected to the hard disk drive platter and the coupling interface and a storage controller are connected to the communication line to control operations of the hard disk drive platter and the solid state device, in which the storage controller is to determine whether the solid state device is coupled to the coupling interface and to modify operations of the hard disk drive platter based upon whether the solid state device is coupled to the coupling interface.

BACKGROUND

The processing speeds of central processing units (CPUs) have increasedmore rapidly than the access speeds of hard disk drives (HDDs). Thisdifference in speed often contributes to delays in the processing ofapplications and has also been known to increase power consumption dueto increased accesses to the HDDs. One solution is to replace the HDDswith non-volatile solid state drives (SSDs), such as, NAND flashmemories. Currently available SSDs are, in many ways, superior to HDDs.For instance, SSDs are typically better suited for devices that requirehigh reliability but also may experience rough environments due tovibration, shock, magnetic fields, etc. Similarly to HDDs, however, SSDsare typically not cost effective to repair or replace because SSDs areoften soldered to printed circuit boards (PCBs) and thus, replacementtypically requires that the SSD be de-soldered from the PCB followedwith soldering of a replacement SSD.

BRIEF DESCRIPTION OF THE DRAWINGS

Features of the present disclosure are illustrated by way of example andnot limited in the following figure(s), in which like numerals indicatelike elements, in which:

FIG. 1 shows a diagram of a data storage apparatus, according to anexample of the present disclosure; and

FIGS. 2-4, respectively, depict flow diagrams of methods for operating adata storage apparatus, according to examples of the present disclosure.

DETAILED DESCRIPTION

For simplicity and illustrative purposes, the present disclosure isdescribed by referring mainly to an example thereof. In the followingdescription, numerous specific details are set forth in order to providea thorough understanding of the present disclosure. It will be readilyapparent however, that the present disclosure may be practiced withoutlimitation to these specific details. In other instances, some methodsand structures have not been described in detail so as not tounnecessarily obscure the present disclosure.

Throughout the present disclosure, the terms “a” and “an” are intendedto denote at least one of a particular element. As used herein, the term“includes” means includes but not limited to, the term “including” meansincluding but not limited to. The term “based on” means based at leastin part on.

Disclosed herein are a data storage apparatus and a method of operatinga data storage apparatus. The data storage apparatus comprises a hybridhard disk drive (HDD) because the apparatus includes both a HDD and atleast one solid state (SS) device, such as, a solid state drive (SSD), adiscreet SS flash memory module, etc. More particularly, the SS devicesin the apparatus are to be implemented as a cache and the HDD is to beimplemented as a main memory. In addition, the data storage apparatusincludes coupling interfaces for the SS devices, such that SS devices,may be removably inserted into the data storage apparatus. Moreover, thedata storage apparatus may include additional coupling interfaces toremovably receive additional SS devices and thereby increase the memorycapacity available for caching. In this regard, the amount of memorycapacity available for caching of data may relatively easily bemodified.

Also disclosed herein is a storage controller that is to vary cachingoperations based upon a characteristic of the SS device(s) contained inthe data storage apparatus. The characteristic of the SS device(s) mayinclude, for instance, whether the SS device(s) has been provided in thedata storage apparatus, the memory type(s) of the SS device(s), thememory capacity of the SS device(s), etc. In one example, the storagecontroller is to automatically detect whether a SS device(s) has beenprovided and to vary caching operations based upon whether the SSdevice(s) has been provided. In another example, the storage controlleris to automatically detect a characteristic of the SS device(s), suchas, memory capacity, memory type, etc., and to vary caching operationsbased upon the detected characteristic.

Through implementation of the data storage apparatus and methoddisclosed herein, the caching functions in a hybrid data storageapparatus may be modified through relatively easy insertion and/orremovable of a SS device(s). In addition, the caching functions maysubstantially be optimized as the types and/or memory capacity of the SSdevice(s) change.

With reference first to FIG. 1, there is shown a diagram of a datastorage apparatus 100, according to an example. It should be understoodthat the data storage apparatus 100 depicted in FIG. 1 may includeadditional components and that some of the components described hereinmay be removed and/or modified without departing from a scope of thedata storage apparatus 100. It should also be understood that thecomponents depicted in FIG. 1 are not drawn to scale and thus, thecomponents may have different relative sizes with respect to each otherthan as shown therein.

The data storage apparatus 100 is depicted as including a printedcircuit board (PCB) 102, an external interface 104, a storage controller106, a communication line 108, a first coupling interface 110, and aplurality of second coupling interfaces 112. As also shown in FIG. 1,the external interface 104 is attached to the PCB 102 and is positionedto be coupled with a processor interface 140. The external interface 104and the processor interface 140 may comprise any of a variety of knowntypes of connectors, such as, Integrated Development Environment (IDE),Advanced Technology Attachment (ATA), Serial Advanced TechnologyAttachment (SATA), Personal Computer Memory Card InternationalAssociation (PCMCIA) connectors, Peripheral Component Interconnect(PCI), Peripheral Component Interconnect Express (PCIe), etc. Theprocessing interface 140 is depicted as being in communication with aprocessor 150 over a bus 142, which is to enable multiple signals, suchas, power, address, data, I/O signals, etc., to be communicated betweenthe data storage apparatus 100 and the processor 150. The processor 150may be a disk drive controller or other external processor. The bus 142may employ any of a variety of different protocols to connect theprocessor 150 to the data storage apparatus 100 and the selection of theprotocol employed may depend upon the type of drive interface beingimplemented by the processor 150. Examples of suitable bus 142 protocolsinclude IDE, ATA, SATA, Parallel Advanced Technology Attachment (PATA),Fibre Channel and Small Computer System Interface (SCSI).

The data storage apparatus 100 is also depicted as including anon-volatile HDD platter 120 having a first connector 122 connected tothe first coupling interface 110. Although not explicitly shown, thefirst connector 122 and the first coupling interface 110 may eachinclude corresponding mating connecting elements to enable the HDDplatter 120 to be removably connected to the first coupling interface110. According to another example, the HDD platter 120 is fixedlyconnected to the first coupling interface 110. In this example, forinstance, the first connector 122 of the HDD platter 120 may be solderedor otherwise fixedly attached to the first coupling interface 110.

The data storage apparatus 100 is further depicted as including aplurality of non-volatile SS devices 130 a, 130 b having respectivesecond connectors 132 connected to respective second coupling interfaces112. Two of the second coupling interfaces 112 have been depicted asbeing uncoupled to illustrate that additional SS devices 130 c-130 n maybe added to the data storage apparatus 100. More particularly, theuncoupled second coupling interfaces 112 have been depicted with aplurality of connecting elements 114, for instance, pins or holes, thatare to mate with mating connecting elements (not shown) in the secondconnectors 132 of the SS devices 130 a-130 n. In this regard, the SSdevices 130 a-130 n may be added and/or removed from the data storageapparatus 100 to thereby vary the total memory capacity of the SSdevices 130 a-130 n. Although the data storage apparatus 100 has beendepicted as including one first coupling interface 110 and four secondcoupling interfaces 112, it should clearly be understood that the datastorage apparatus 100 may include any number of interfaces 110, 112.

The first coupling interface 110 and/or the second coupling interfaces112 may comprise a single connector or multiple, for instance,independent connectors. Examples of suitable connectors include Dualin-line Package (DIP), Single in-line Pin Package (SIPP), Single in-lineMemory Module (SIMM), Dual in-line Memory Module (DIMM), Small Outline(SO)-DIMM, Butterfly, IDE, ATA, SATA, etc.

The HDD platter 120 may comprise rotating magnetic or optical media orplatters. The SS devices 130 a-130 n may comprise any of a variety ofdifferent types of non-volatile SS devices, such as, NAND-based flashmemory, phase-change memory, Memristor, etc. In addition, at least oneof the SS devices 130 a-130 n may comprise a plurality of individualmemory devices, such as, 1, 2, or 4 GB memory devices along with controlcircuitry for controlling operations of the individual memory devices.According to an example, at least one of the SS devices 130 a differsfrom at least another one of the SS devices 130 b. Thus, for instance,one of the SS devices 130 a may have a 2 GB memory capacity and anotherone of the SS devices 130 b may have a 4 GB memory capacity. As anotherexample, one of the SS devices 130 a may be a NAND-based flash memorydevice and another one of the SS devices 130 b may be a phase-changetype memory device.

The HDD platter 120 may have any suitable capacity, such as, forinstance, 100 GB, 200 GB, and higher. The SS devices 130 a-130 n mayeach be, for instance, 1, 2, 4 GB, or more, and the total capacity ofthe SS devices 130 a-130 n may be varied by adding SS devices 130 a-130n to the data storage apparatus 100 or by removing SS devices 130 a-130n from the data storage apparatus 100.

The storage controller 106 is depicted as being fixedly attached to thePCB 102. Alternatively, however, the storage controller 106 may beconnected to a coupling interface (not shown) in a manner similar tothose discussed above with respect to the HDD disk drive platter 120 andSS devices, 120, 130 a-130 n. In any regard, the storage controller 106is depicted as being connected to the external interface 104 and thecommunication line 108. In addition, the communication line 108 isdepicted as being connected to each of the first coupling interface 110and the second coupling interfaces 112. Generally speaking, the storagecontroller 106 is to manage operations within the data storage apparatus100 and to communicate with devices external to the data storageapparatus 100, such as the processor 150. Although not shown in FIG. 1,the data storage apparatus 100 may also include a power conditioning anddistribution device that distributes power to the components of the datastorage apparatus 100.

The storage controller 106 is to receive data from the processor 150through the external interface 104 and to manage storage of the data inone or more of the HDD platter 120 and the SS devices 130 a-130 n overthe communication line 108. According to an example, the storagecontroller 106 is to implement the HDD platter 120 as a primary or mainmemory and to implement the SS devices 130 a-130 n as a cache. Moreparticularly, and as discussed in greater detail below, the storagecontroller 106 is to determine whether a SS device 130 a has beenconnected to a second coupling interface 112 and to implement differenttypes of operations on the HDD platter 120 based upon whether a SSdevice 130 a has been connected to a second coupling interface 112.Thus, for instance, the storage controller 106 may manage the operationsof the HDD platter 120 and the SS devices 130 a-130 n by managingstorage of the data in either the HDD platter 120, which may require arelatively longer time to access the data, or at least one of the SSdevices 130 a-130 n to thereby cache the data and enable the data to beretrieved at a relatively shorter period of time.

In addition, or alternatively, for the SS device(s) 130 a-130 ncontained in the data storage apparatus 100, the storage controller 106is to determine various aspects of the SS device(s) 130 a-130 n, whichinclude, for instance, type of memory the SS device(s) 130 a-130 ncomprises, the total capacity of the SS device(s) 130 a-130 n, etc. Thestorage controller 106 is to implement different types of operations onthe HDD platter 120 and the SS device(s) 130 a-130 n based upon thevarious aspects of the SS device(s) 130 a-130 n.

In any regard, the storage controller 106 may communicate with the HDDplatter 120 and the SS devices 130 a-130 n through use of any of avariety of standard communication protocols over the communication line108. The communication protocols may include, for instance, SATA orother types of mass communication protocols or via more discreetdirected storage interfaces such as the Address/Data bus of the storagecontroller (106). In this interface instantiation, flash memoryinterface may be the same as an SRAM interface, except that the flashmemory requires a 12V/5V programming voltage to erase and write newdata. In addition, although the storage controller 106 has been depictedas being in communication with the first and second coupling interfaces110-112 over a common communication line 108, it should be understoodthat the storage controller 106 may be individually connected to each ofthe first and second coupling interfaces 110-112 over discreetcommunication lines without departing from a scope of the data storageapparatus 100.

The storage controller 106 may comprise hardware or a hardware/softwarecombination. For instance, the storage controller 106 comprises acircuit component containing logic for managing storage of the data inone or more of the HDD platter 120 and the SS devices 130 a-130 n.

Various manners in which the storage controller 106 may operate aredescribed in greater detail with respect to FIGS. 2-4, which,respectively depict flow diagrams of methods 200-400 for operating adata storage apparatus 100, according to various examples. It should beapparent that the methods 200-400 represent generalized illustrationsand that other operations may be added or existing operations may beremoved, modified or rearranged without departing from the scopes of themethods 200-400.

The descriptions of the methods 200-400 are made with particularreference to the data storage apparatus 100 depicted in FIG. 1. Itshould, however, be understood that the methods 200-400 may beimplemented in an apparatus that differs from the data storage apparatus100 without departing from the scopes of the methods 200-400.

With reference first to the method 200, at block 202, a status of a SSdevice 130 a-130 n is monitored. More particularly, the storagecontroller 106 may monitor whether a SS device(s) 130 a-130 n isconnected to or removed from the second coupling interface(s) 112.According to an example, the storage controller 106 automaticallydetermines whether a SS device(s) 130 a-130 n is connected to the secondcoupling interface(s) 112. In this example, the storage controller 106may implement a plug-and-play operation to detect when the SS device(s)130 a-130 n is connected to the second coupling interface(s) 112.

In addition, in monitoring the SS device(s) 130 a-130 n, the storagecontroller 106 may obtain other information pertaining to the SSdevice(s) 130 a-130 n. For instance, the storage controller 106 maydetermine the memory capacity(ies) of the SS device(s) 130 a-130 n. Inaddition, or alternatively, the storage controller 106 may determine thememory types of the SS device(s) 130 a-130 n.

At block 204, a determination as to whether a SS device(s) 130 a-130 nis coupled to a second coupling interface 112 is made. As discussedabove, the storage controller 106 may automatically determine when andwhether a SS device(s) 130 a-130 n has been coupled to a second couplinginterface 112. In addition, the storage controller 106 may automaticallydetermine when and whether a plurality of SS devices 130 a-130 n havebeen coupled to a plurality of second coupling interfaces 112.

In response to a determination that a SS device 130 a not coupled to asecond coupling interface 112, the storage controller 106 implements afirst type of operation on the HDD platter 120, as indicated at block206. The first type of operation may include operating the HDD platter120 as a main memory without caching received data, such that all of thedata received into the data storage apparatus 100 is stored in the HDDplatter 120. Alternatively, the first type of operation may includeoperating a portion of the HDD platter 120 as a cache through use of aconventional caching technique. In this regard, the storage controller106 may operate the data storage apparatus 100 without any SS devices130 a-130 n being installed on the data storage apparatus 100.

In response to a determination that a SS device 130 a is coupled to asecond coupling interface 112, the storage controller 106 implements asecond type of operation on the HDD platter 120 and the SS device 130 a,as indicated at block 208. The second type of operation may include anoperation that differs from the first type of operation. In addition,the second type of operation may include implementing a cachingoperation on the SS device(s) 130 a-130 n. In addition, the storagecontroller 106 may control operations of the HDD platter 120 and the SSdevice(s) 130 a-130 n to substantially optimize implementation ofcaching operations on the SS device. In other words, for instance, thestorage controller 106 may control caching operations to substantiallymaximize caching of data that is accessed most frequently.

Turning now to the FIG. 3, the method 300 includes many of the sameelements as those contained in the method 200. As such, descriptions ofthe elements having the same reference numerals as those in the method200 are omitted. As shown in the method 300, following the “yes”condition at block 204, a storage capacity of the SS device(s) 130 a-130n is determined, as indicated at block 302. Although the determinationof the storage capacity of the SS device(s) 130 a-130 n has beendepicted as occurring after block 204, it should be understood that thestorage capacity of the SS device(s) 130 a-130 n may have beendetermined at block 202, without departing from a scope of the method300. In this regard, the storage controller 106 may determine thestorage capacity of the SS device(s) 130 a-130 n as the storagecontroller 106 is monitoring for the SS device(s) 130 a-130 n orimmediately following detection of the SS device(s) 130 a-130 n.

At block 304, the caching operation of the second type of operation ismodified based upon the determined storage capacity of the SS device(s)130 a-130 n. Modification of the caching operation may include, forinstance, prioritizing data to be cached based upon the determinedstorage capacity of the SS device(s) 130 a-130 n. Thus, for instance,when the storage capacity is relatively small, the storage controller106 may modify the caching operation to cache only data that has beendetermined as having the highest priority. In addition, when the storagecapacity is relatively large, the storage controller 106 may modify thecaching operation to cache additional, lower-priority data.

Following block 304, the storage controller 106 may continue to monitorthe SS device(s) 130 a-130 n to detect whether any changes have occurredand the method 300 may be repeated. As such, the storage controller 106may modify the caching operation on a substantially continuous basis asthe storage capacity of the SS device(s) 130 a-130 n changes through,for instance, the addition and/or replacement of the SS device(s) 130a-130 n.

Turning now to the FIG. 4, the method 400 includes many of the sameelements as those contained in the method 200. As such, descriptions ofthe elements having the same reference numerals as those in the method200 are omitted. As shown in the method 400, following the “yes”condition at block 204, a memory type(s) of the SS device(s) 130 a-130 nis determined, as indicated at block 402. Although the determination ofthe memory type of the SS device(s) 130 a-130 n has been depicted asoccurring after block 204, it should be understood that the memory typeof the SS device(s) 130 a-130 n may have been determined at block 202,without departing from a scope of the method 400. In this regard, thestorage controller 106 may determine the memory type(s) of the SSdevice(s) 130 a-130 n as the storage controller 106 is monitoring forthe SS device(s) 130 a-130 n or immediately following detection of theSS device(s) 130 a-130 n.

At block 404, the caching operation of the second type of operation ismodified based upon the determined memory type(s) of the SS device(s)130 a-130 n. Modification of the caching operation may include, forinstance, varying the amount of data to be cached based upon thedetermined memory type(s) of the SS device(s) 130 a-130 n. By way ofexample in which the data storage apparatus 100 includes a SS device 130a that comprises a single-layer cell NAND flash memory and a SS device130 b that comprises a multi-layer cell NAND flash memory, the storagecontroller 106 may modify the caching operation by caching data having ahigher priority level in the SS device 130 a comprising the single-layercell NAND flash memory and caching data having a lower priority level inthe SS device 130 b comprising the multi-layer cell NAND flash memory.In this regard, the storage controller 106 may discriminately cache dataamong the plurality of SS devices 130 a-130 n.

Following block 404, the storage controller 106 may continue to monitorthe SS device(s) 130 a-130 n to detect whether any changes have occurredand the method 400 may be repeated. As such, the storage controller 106may modify the caching operation on a substantially continuous basis asthe storage capacity of the SS device(s) 130 a-130 n changes through,for instance, the addition and/or replacement of the SS device(s) 130a-130 n.

Some or all of the operations set forth in the methods 200-400 may becontained as a utility, program, or subprogram, in any desired computerreadable storage medium. In addition, the operations may be embodied bycomputer programs, which may exist in a variety of forms both active andinactive. For example, they may exist as machine readable instruction(s)comprised of program instructions in source code, object code,executable code or other formats. Any of the above may be embodied on anon-transitory computer readable storage medium, which include storagedevices. Thus, for instance, the storage controller 106 may beprogrammed to implement the methods 200-400.

Examples of non-transitory computer readable storage media includeconventional computer system RAM, ROM, EPROM, EEPROM, and magnetic oroptical disks or tapes. Concrete examples of the foregoing includedistribution of the programs on a CD ROM or via Internet download. It istherefore to be understood that any electronic device capable ofexecuting the above-described functions may perform those functionsenumerated above.

Although described specifically throughout the entirety of the instantdisclosure, representative examples of the present disclosure haveutility over a wide range of applications, and the above discussion isnot intended and should not be construed to be limiting, but is offeredas an illustrative discussion of aspects of the disclosure.

What has been described and illustrated herein is an example along withsome of its variations. The terms, descriptions and figures used hereinare set forth by way of illustration only and are not meant aslimitations. Many variations are possible within the spirit and scope ofthe subject matter, which is intended to be defined by the followingclaims—and their equivalents—in which all terms are meant in theirbroadest reasonable sense unless otherwise indicated.

1. A data storage apparatus comprising: a non-volatile hard disk driveplatter; a coupling interface for removably receiving a non-volatilesolid state device operable as a cache; a communication linefunctionally connected to the hard disk drive platter and the couplinginterface; a storage controller connected to the communication line tocontrol operations of the hard disk drive platter and the solid statedevice, wherein the storage controller is to determine whether the solidstate device is coupled to the coupling interface and to controloperations of the hard disk drive platter based upon whether the solidstate device is coupled to the coupling interface.
 2. The data storageapparatus according to claim 1, wherein the solid state device isremovably coupled to the coupling interface, wherein the storagecontroller is further to determine a storage capacity of the solid statedevice, and wherein the storage controller is further to control cachingoperations in the hard disk drive platter and the solid state devicebased upon the storage capacity of the solid state device.
 3. The datastorage apparatus according to claim 1, wherein the solid state deviceis removably coupled to the coupling interface, wherein the storagecontroller is further to determine a memory type of the solid statedevice, and wherein the storage controller is further to control cachingoperations of the hard disk drive platter and the solid state devicebased upon the memory type of the solid state device.
 4. The datastorage apparatus according to claim 1, further comprising: a pluralityof coupling interfaces; and a plurality of solid state devices removablycoupled to the plurality of coupling interfaces, wherein the storagecontroller is further to determine a total storage capacity of theplurality of solid state devices and to control caching operations ofthe hard disk drive platter and the plurality of solid state devicesbased upon the total storage capacity of the plurality of solid statedevices.
 5. The data storage apparatus according to claim 1, furthercomprising: a plurality of coupling interfaces; and a plurality of solidstate devices removably coupled to the plurality of coupling interfaces,wherein the storage controller is further to determine memory types ofthe plurality of solid state devices and to control caching operationsof the hard disk drive platter and the plurality of solid state devicesbased upon the memory types of the plurality of solid state devices. 6.The data storage apparatus according to claim 5, wherein the pluralityof solid state devices comprise a combination of a single-layer cell anda multi-layer cell NAND flash memory.
 7. The data storage apparatusaccording to claim 6, wherein the storage controller is further tocontrol caching operations of the hard disk drive platter and theplurality of solid state devices by caching data having a higherpriority level in the solid state device comprising the single-layercell NAND flash memory and caching data having a lower priority level inthe solid state device comprising the multi-layer cell NAND flashmemory.
 8. The data storage apparatus according to claim 1, wherein thestorage controller is to determine whether the solid state device iscoupled to the coupling interface and to disable caching in the datastorage apparatus in response to a determination that the solid statedevice is not coupled to the coupling interface.
 9. The data storageapparatus according to claim 1, wherein the storage controller is tocontrol operations of the hard disk drive platter and the solid statedevice to substantially optimize implementation of caching operations onthe solid state device.
 10. A method of operating a data storageapparatus, wherein the data storage apparatus comprises a non-volatilehard disk drive platter and a coupling interface for removably receivinga non-volatile solid state device, said method comprising: determiningwhether the solid state device is removably coupled to the couplinginterface; implementing a first type of operation on the hard disk driveplatter in response to a determination that the solid state device isnot coupled to the coupling interface; and implementing a second type ofoperation on the hard disk drive platter in response to a determinationthat the solid state device is removably coupled to the couplinginterface, wherein the second type of operation differs from the firsttype of operation, and wherein the second type of operation comprisesimplementing a caching operation on the solid state device.
 11. Themethod according to claim 10, further comprising: determining a storagecapacity of the solid state device; and modifying the caching operationof the second type of operation based upon the determined storagecapacity of the solid state device.
 12. The method according to claim10, further comprising: determining a storage type of the solid statedevice; and modifying the caching operation of the second type ofoperation based upon the determined storage type of the solid statedevice.
 13. The method according to claim 12, wherein the data storageapparatus comprises a plurality of solid state devices comprising acombination of a single-layer cell and a multi-layer cell NAND flashmemory, said method further comprising: determining storage types of theplurality of solid state devices; and modifying the caching operation ofthe plurality of solid state devices by caching data having a higherpriority level in the solid state device comprising the single-layercell NAND flash memory and caching data having a lower priority level inthe solid state device comprising the multi-layer cell NAND flashmemory.
 14. A non-transitory computer readable storage medium on whichis embedded a computer program, said computer program implementing amethod of operating a data storage apparatus, wherein the data storageapparatus comprises a non-volatile hard disk drive platter and acoupling interface for removably receiving a non-volatile solid statedevice, said computer program comprising a set of instructions to:determine whether the solid state device is removably coupled to thecoupling interface; implement a first type of operation on the hard diskdrive platter in response to a determination that the solid state deviceis not coupled to the coupling interface; and implement a second type ofoperation on the hard disk drive platter in response to a determinationthat the solid state device is removably coupled to the couplinginterface, wherein the second type of operation differs from the firsttype of operation, and wherein the second type of operation comprisesimplementing a caching operation on the solid state device.
 15. Thecomputer readable storage medium according to claim 14, said computerprogram further comprising a set of instructions to: determine acharacteristic of the solid state device; and modify the cachingoperation of the solid state device based upon a characteristic of thesolid state device.